#ifndef __THREAD_H__
#define __THREAD_H__

#include "Noncopyable.hpp"
#include <pthread.h>

namespace wd
{

class Thread : Noncopyable
{
public:
    Thread();
    
    virtual ~Thread()
    {

    }

    // 启动一个子线程
    void start();

    // 等待一个子线程运行结束
    void join();

private:
    virtual void run() = 0;

    // 子线程入口函数
    static void * start_routine(void *);

private:
    pthread_t _pthid; // 线程 id 
    bool _isRunning; // 线程状态，表示线程是否在运行
};

} // end of namespace wd

#endif

